package com.hero.feignClients;

import com.hero.domain.CourseIndex;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

/**
 * @author yunfei
 * @date 2023年01月03日 9:23
 * 这个是SearchClient远程接口的服务降级方案
 */
@Component
public class SearchClientFallbackFactory implements FallbackFactory<SearchClient> {

    // 服务降级类中的方法返回值
    // 如果返回值类型是一个对象通常返回一个null值
    // 如果返回值是一个通用的XXXResult通常返回一个错误信息对象
    // 如果返回值是其他类型(基本数据类型/boolean类型/String类型) 根据业务进行返回

    @Override
    public SearchClient create(Throwable throwable) {
        return new SearchClient() {
            @Override
            public Boolean add(CourseIndex courseIndex) {
                System.out.println("==============服务降级============");
                throwable.printStackTrace();
                return false;
            }

            @Override
            public CourseIndex getCourseById(Long id) {
                return null;
            }

            @Override
            public Boolean delCourseById(Long id) {
                return false;
            }
        };
    }
}